package com.origin.niuke.point;

/**
 * NC104 比较版本号
 * 算法：双指针
 * 每个版本号至少包含1个修订号。
 * 因为修订号的大小在 int 范围内, 所以把修订号转化成数字再比较,
 * 这样也可以排除前导 0 的干扰
 *
 * @author yezh
 * @date 2022/11/14 21:03
 */
public class NC104 {

    public int compare (String version1, String version2) {
        int m = version1.length(), n = version2.length();
        int p1 = 0, p2 = 0;
        while (p1 < m || p2 < n) {
            int t1 = 0;
            while (p1 < m && version1.charAt(p1) != '.') {
                t1 = t1 * 10 + (version1.charAt(p1) - '0');
                ++p1;
            }
            int t2 = 0;
            while (p2 < n && version2.charAt(p2) != '.') {
                t2 = t2 * 10 + (version2.charAt(p2) - '0');
                ++p2;
            }
            if (t1 != t2) return t1 > t2 ? 1 : -1;
            ++p1; ++p2;
        }
        return 0;
    }

}
